2a0fef63884f6bd58349bfd1e3a417b9f720f3e5,plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/CloseReviewsDecorator.java,CloseReviewsDecorator,closeReviewsForDeletedResources,#number#number#,144
Before Change
* Close reviews that relate to resources that have been deleted or renamed.
*/
protected int closeReviewsForDeletedResources(int projectId, int projectSnapshotId) {
String conditions = " WHERE status!='CLOSED' AND project_id=" + projectId
+ " AND resource_id IN ( SELECT prev.project_id FROM snapshots prev WHERE prev.root_project_id=" + projectId
+ " AND prev.islast=? AND NOT EXISTS ( SELECT cur.id FROM snapshots cur WHERE cur.root_snapshot_id=" + projectSnapshotId
+ " AND cur.created_at > prev.created_at AND cur.root_project_id=" + projectId + " AND cur.project_id=prev.project_id ) )";
List<Review> reviews = databaseSession.getEntityManager().createNativeQuery("SELECT * FROM reviews " + conditions, Review.class)
.setParameter(1, Boolean.TRUE)
.getResultList();
for (Review review : reviews) {
notifyClosed(null, review);
}
int rowUpdated = databaseSession.createNativeQuery("UPDATE reviews SET status='CLOSED', updated_at=CURRENT_TIMESTAMP" + conditions)
.setParameter(1, Boolean.TRUE)
.executeUpdate();
LOG.debug("- {} reviews set to 'closed' on project #{}", rowUpdated, projectSnapshotId);
return rowUpdated;
After Change
*/
@SuppressWarnings("unchecked")
protected int closeReviewsForDeletedResources(int projectId, int projectSnapshotId) {
String conditions = " WHERE status!='CLOSED' AND project_id=:" + PROJECT_ID
+ " AND resource_id IN ( SELECT prev.project_id FROM snapshots prev WHERE prev.root_project_id=:" + PROJECT_ID
+ " AND prev.islast=:" + IS_LAST + " AND NOT EXISTS ( SELECT cur.id FROM snapshots cur WHERE cur.root_snapshot_id=:" + PROJECT_SNAPSHOT_ID
+ " AND cur.created_at > prev.created_at AND cur.root_project_id=:" + PROJECT_ID + " AND cur.project_id=prev.project_id ) )";
List<Review> reviews = databaseSession.getEntityManager().createNativeQuery("SELECT * FROM reviews " + conditions, Review.class)
.setParameter(PROJECT_ID, projectId)
.setParameter(PROJECT_SNAPSHOT_ID, projectSnapshotId)
.setParameter(IS_LAST, Boolean.TRUE)
.getResultList();
for (Review review : reviews) {
notifyClosed(null, review);
}
int rowUpdated = databaseSession.createNativeQuery("UPDATE reviews SET status='CLOSED', updated_at=CURRENT_TIMESTAMP" + conditions)
.setParameter(PROJECT_ID, projectId)
.setParameter(PROJECT_SNAPSHOT_ID, projectSnapshotId)
.setParameter(IS_LAST, Boolean.TRUE)
.executeUpdate();
LOG.debug("- {} reviews set to 'closed' on project #{}", rowUpdated, projectSnapshotId);